<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class _temporadaM extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    // I N S E R T    
    public function insert($establecimiento, $data) {
        $this->db->query("SET AUTOCOMMIT=0");
        $this->db->query("BEGIN;");
        try {
            //proceso los datos
            //  var_dump($data);
            // return false;
            //elminamos solo las temporadas que se quisieron eliminar
            $deletes = explode(",", $data["deletes"]);
            foreach ($deletes as $temporada) {
                $this->delete($establecimiento, $temporada);
            }

            $periodos = explode(",", $data['nPeriodos']);
            $cargados = explode(",", $data['cargados']);
            //var_dump($periodos);

            for ($i = 1; $i <= $data['nTemporadas']; $i++) {
                $np = $periodos[$i];
                if ($np != "false") {
                    if ($i <= $data['temporadasCargadas']) { // si era uno anterior se eliminan los periodos
                        $temporada = $cargados[$i];
                        //   var_dump($temporada);
                        $name['nombre'] = $data["nombre_{$i}"];
                        $this->actualizarNombreTemporada($temporada, $name);
                        $this->eliminarPeriodos($temporada);
                        for ($j = 1; $j <= $np; $j++) {
                            if (isset($data["sdm_{$i}_{$j}"])) {

                                $in["fecha_inicio"] = $data["sdm_{$i}_{$j}"] . "-" . $data["sdd_{$i}_{$j}"];
                                $in["fecha_fin"] = $data["shm_{$i}_{$j}"] . "-" . $data["shd_{$i}_{$j}"];

                                $this->crearPeriodo($in, $temporada);
                            }
                        }
                    } else { // si es uno nuevo se ingresan todos los datos                        
                        $in["nombre"] = $data["nombre_{$i}"]; // creamos la temporada
                        $this->crearTemporada($in, $establecimiento);
                        $temporada = $this->getLastValue("temporada", "id_temporada");
                        for ($j = 1; $j <= $np; $j++) {
                            if (isset($data["sdm_{$i}_{$j}"])) {
                                $in["fecha_inicio"] = $data["sdm_{$i}_{$j}"] . "-" . $data["sdd_{$i}_{$j}"];
                                $in["fecha_fin"] = $data["shm_{$i}_{$j}"] . "-" . $data["shd_{$i}_{$j}"];
                                $this->crearPeriodo($in, $temporada);
                            }
                        }

                        // se crean todas la categorias por temporadas
                        $categorias = $this->getCategorias($establecimiento);
                        foreach ($categorias as $categoria) {
                            $query = "INSERT INTO categoria_x_temporada(id_categoria,id_temporada) VALUES('{$categoria->id_categoria}','{$temporada}')";
                            $this->db->query($query);
                        }

                        //cremos todos los numeros de personas
                        foreach ($categorias as $categoria) {
                            for ($j = 1; $j <= $categoria->capacidad_estandar; $j++) {
                                $query = "INSERT INTO tarifa_x_persona(id_categoria,id_temporada,n_personas) VALUES('{$categoria->id_categoria}','{$temporada}','$j')";
                                $this->db->query($query);
                            }
                        }
                    }
                }
            }
        } catch (Exception $e) {
            $this->db->query("ROLLBACK;");
            $this->db->query("SET AUTOCOMMIT=1");
            return false;
        }
        $this->db->query("SET AUTOCOMMIT=1");
        return true;
    }

    // S E L E C T
    public function getAll($establecimiento) {
        $query = "SELECT * FROM temporada WHERE id_establecimiento='$establecimiento'";
        return $this->db->query($query)->result();
    }

    // D E L E T E
    public function delete($establecimiento, $id) {
        $query = "DELETE FROM temporada WHERE id_establecimiento='$establecimiento' AND id_temporada='$id'";
        $this->db->query($query);
    }

}